package com.ganbo.ms.pool.pojo;

import lombok.Data;
import lombok.ToString;
import lombok.extern.slf4j.Slf4j;

import javax.validation.constraints.NotNull;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;


@Data
@ToString
@Slf4j
public class Snapshot {
    /**
     * 生成时间 YYYYMMDDHHMMSSsss [20220920080006000]
     */
    Long originTime;

    /**
     * 股票代码,600001
     */
    String code;

    /**
     * 最新价格(交易阶段有数据)
     */
    Long lastPx;
    /**
     * 最高价(交易阶段有数据)
     */
    Long highPx;
    /**
     * 最低价(交易阶段有数据)
     */
    Long lowPx;
    /**
     * 开盘价(交易阶段有数据)
     */
    Long openPx;
    /**
     * 昨收价(启动阶段有数据)
     */
    Long prevClosePx;
    /**
     * 成交笔数(交易阶段有数据)
     */
    Long numTrades;
    /**
     * 成交总量(交易阶段有数据)
     */
    Long totalVolumeTrade;
    /**
     * 成交金额(交易阶段有数据)
     */
    Long totalValueTrade;

    List<Long> didPrice;                     ///< 申买价
    List<Long> didVolume;                    ///< 申买量
    List<Long> offerPrice;                   ///< 申卖价
    List<Long> offerVolume;                  ///< 申卖量

    /**
     * 原始状态码
     */
    String tradingPhaseCode;


    public Snapshot() {

    }


    public void load(boolean consume) {

    }


    private Long currentYYYYMMDDHHMMSS;
    private Long currentYYYYMMDDHHMM;
    private Long currentYYYYMMDD;
    private Long currentHHMMSS;
    private Long currentHHMM;
    private Long currentMM;

    /**
     * 带后缀股票代码
     * 例:600000.SH
     */
    private String tsCode;

    /**
     * 数字话股票代码
     * 例:000123 -> 123
     */
    private Integer codeNum;

    /**
     * 股票名字，从redis获取
     */
    private String name;


    public void init() {
        //统一单位
        totalVolumeTrade = (totalVolumeTrade + 500) / 10000;
        totalValueTrade = totalValueTrade / 10000;

        currentYYYYMMDDHHMMSS = (originTime / 1000);
        currentYYYYMMDDHHMM = (currentYYYYMMDDHHMMSS / 100);
        currentYYYYMMDD = (currentYYYYMMDDHHMM / 10000);
        currentHHMMSS = currentYYYYMMDDHHMMSS % 1000000;
        currentHHMM = currentYYYYMMDDHHMM % 10000;
        currentMM = currentHHMM % 100;


        codeNum = Integer.valueOf(code);
    }


    //    private Overview overview;


}

